import axios from 'axios';
//对于小程序平台的适配器
import mpAdapter from "axios-miniprogram-adapter";
import oneKeyLogin from "./oneKeyLogin.js"
axios.defaults.adapter = mpAdapter;
// console.log(import.meta.env)
const http = axios.create({
	baseURL: import.meta.env.VITE_BASE_URL,
	timeout: 1000 * 10,
	headers: {
		'Content-Type': "application/json",
		//服务器要求的请求头
		// "userAgent": "general"
	},
});

// 请求拦截器
http.interceptors.request.use(
	//请求成功
	(config) => {
		//不需要携带token的请求路径
		let notNeededTokenPaths = ['/users/onekeyLogin', '/users/login'];
		//需要携带token的路径,进行了取反操作
		let needTokenPath = !notNeededTokenPaths.includes(config.url);
		// 获取token
		let token = uni.getStorageSync('myx-token')
		//如果有token并且请求的不是登入页面,那么可以携带token
		if (token && needTokenPath) {
			//要把token携带在请求头里面
			config.headers.authorization = token;
			config.headers.userAgent = 'general'
			// console.log(config)
		}
		return config;
	},
	//请求出错
	(error) => {
		// do something with request error
		return Promise.reject(error);
	}
);

// 响应拦截器
http.interceptors.response.use(
	//响应成功
	(response) => {
		const res = response.data;
		//接口通了,并且也响应了,但是请求的内容可能不合法,进行弹框提示
		if (!res.state) {
			uni.showToast({
				icon: 'error',
				title: res.msg
			})
			//判断状态码 如果状态码1004或者10022,需要重新退到登入页面
			if(res.code==='10022' || res.code==='1004'){
				//移除本地token
				uni.removeStorageSync('myx-token');
				oneKeyLogin()
			}
			return Promise.reject(res.msg)
		}
		return res
	},
	//响应失败
	(error) => {
		return Promise.reject(error);
	}
);

export default http;